﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using acessaDB;
using Frame;
using System.Data;
using System.Configuration;
using FirebirdSql.Data.FirebirdClient;
using Estrutura;


namespace Banco
{

    public class BD_Capitulo_ata
    {
        #region variaveis_globais

        acessaDB.conectaDBFireBird fireBird = new conectaDBFireBird();
        string conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionLocal"];
        string usuario = string.Empty;

        #endregion

        #region construtor

        public BD_Capitulo_ata()
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
        }
        public BD_Capitulo_ata(string usu_Login)
        {
            if (System.Configuration.ConfigurationManager.AppSettings["ambiente"] == "PROD")
                conectionString = System.Configuration.ConfigurationManager.AppSettings["FireBirdConnectionProd"];
            usuario = usu_Login;
        }

        #endregion

        #region metodos

        public DataSet _retorna_Capitulo_ata(
                                                string ATA_CODIGO,
                                                string ATA_DESCRICAO,
                                                string ATA_CODIGO_ANTECESSOR,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ATA_DESCRICAO_LONGA
                                                )
        {

            if (string.IsNullOrEmpty(ATA_CODIGO)) ATA_CODIGO = "''";
            if (string.IsNullOrEmpty(ATA_DESCRICAO)) ATA_DESCRICAO = "''";
            if (string.IsNullOrEmpty(ATA_CODIGO_ANTECESSOR)) ATA_CODIGO_ANTECESSOR = "''";
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''";
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''";
            if (string.IsNullOrEmpty(ATA_DESCRICAO_LONGA)) ATA_DESCRICAO_LONGA = "''";

            string sql = "SELECT " +
                                  "ATA_SISTEMA.ATA_CODIGO, " +
                                  "ATA_SISTEMA.ATA_DESCRICAO, " +
                                  "ATA_SISTEMA.ATA_CODIGO_ANTECESSOR, " +
                                  "ATA_SISTEMA.USU_INSERT, " +
                                  "ATA_SISTEMA.DATA_INSERT, " +
                                  "ATA_SISTEMA.USU_UPDATE, " +
                                  "ATA_SISTEMA.DATA_UPDATE, " +
                                  "ATA_SISTEMA.ATA_DESCRICAO_LONGA " +
                            "FROM ATA_SISTEMA " +
                            /*"LEFT JOIN ATA_SISTEMA ON ATA_SISTEMA.ATA_SISTEMA_ID = ATA_SISTEMA.ATA_SISTEMA_ID " +
                            "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = ATA_SISTEMA.USUARIO_ID " +
                            "LEFT JOIN USUARIO ON USUARIO.USUARIO_ID = ATA_SISTEMA.USUARIO_ID " +*/
                            "WHERE " +
                            "      (ATA_SISTEMA.ATA_CODIGO                      = " + ATA_CODIGO + "  OR " + ATA_CODIGO + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_DESCRICAO                   = " + ATA_DESCRICAO + "  OR " + ATA_DESCRICAO + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_CODIGO_ANTECESSOR           = " + ATA_CODIGO_ANTECESSOR + "  OR " + ATA_CODIGO_ANTECESSOR + " = '') AND " +
                            "      (ATA_SISTEMA.USU_INSERT                      = " + USU_INSERT + "  OR " + USU_INSERT + " = '0') AND " +
                            "      (ATA_SISTEMA.DATA_INSERT                     = " + DATA_INSERT + "  OR " + DATA_INSERT + " = '') AND " +
                            "      (ATA_SISTEMA.USU_UPDATE                      = " + USU_UPDATE + "  OR " + USU_UPDATE + " = '0') AND " +
                            "      (ATA_SISTEMA.DATA_UPDATE                     = " + DATA_UPDATE + "  OR " + DATA_UPDATE + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_DESCRICAO_LONGA             = " + ATA_DESCRICAO_LONGA + "  OR " + ATA_DESCRICAO_LONGA + " = '') ";

            DataSet dsRetorno = fireBird.retornaDataSet(sql, conectionString);
            return dsRetorno;

        }


        public List<ES_Capitulo_ata> _obter_Capitulo_ata(
                                                string ATA_CODIGO,
                                                string ATA_DESCRICAO,
                                                string ATA_CODIGO_ANTECESSOR,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ATA_DESCRICAO_LONGA,
                                                string CODIGO_DESC = "N" //concatenar codigo com descrição em combobox
                                            )
        {

            if (string.IsNullOrEmpty(ATA_CODIGO)) ATA_CODIGO = "''"; else ATA_CODIGO = Util.retonarAspas(ATA_CODIGO + "%");
            if (string.IsNullOrEmpty(ATA_DESCRICAO)) ATA_DESCRICAO = "''"; else ATA_DESCRICAO = Util.retonarAspas(ATA_DESCRICAO + "%");
            if (string.IsNullOrEmpty(ATA_CODIGO_ANTECESSOR)) ATA_CODIGO_ANTECESSOR = "''"; else ATA_CODIGO_ANTECESSOR = Util.retonarAspas(ATA_CODIGO_ANTECESSOR + "%");
            if (string.IsNullOrEmpty(USU_INSERT)) USU_INSERT = "'0'";
            if (string.IsNullOrEmpty(DATA_INSERT)) DATA_INSERT = "''"; else DATA_INSERT = Util.retonarAspas(DATA_INSERT + "%");
            if (string.IsNullOrEmpty(USU_UPDATE)) USU_UPDATE = "'0'";
            if (string.IsNullOrEmpty(DATA_UPDATE)) DATA_UPDATE = "''"; else DATA_UPDATE = Util.retonarAspas(DATA_UPDATE + "%");
            if (string.IsNullOrEmpty(ATA_DESCRICAO_LONGA)) ATA_DESCRICAO_LONGA = "''"; else ATA_DESCRICAO_LONGA = Util.retonarAspas(ATA_DESCRICAO_LONGA + " % ");

            string sql = "SELECT " +
                                  "ATA_SISTEMA.ATA_CODIGO, " ;

            if (CODIGO_DESC == "S" )
                sql +=            "ATA_SISTEMA.ATA_CODIGO ||' - '|| ATA_SISTEMA.ATA_DESCRICAO AS ATA_DESCRICAO, " ;
            else
                sql +=            "ATA_SISTEMA.ATA_DESCRICAO, ";

            sql += "COALESCE(ATA_SISTEMA.ATA_CODIGO_ANTECESSOR, ATA_SISTEMA.ATA_CODIGO) ATA_CODIGO_ANTECESSOR, " +
                                  "ATA_SISTEMA.USU_INSERT, " +
                                  "ATA_SISTEMA.DATA_INSERT, " +
                                  "ATA_SISTEMA.USU_UPDATE, " +
                                  "ATA_SISTEMA.DATA_UPDATE, " +
                                  "SUBSTRING(CAST(ATA_SISTEMA.ATA_DESCRICAO_LONGA AS VARCHAR(2000)) FROM 1 FOR 200) ATA_DESCRICAO_LONGA " +
                            "FROM ATA_SISTEMA " +                
                            "WHERE " +
                            "      (ATA_SISTEMA.ATA_CODIGO                      LIKE " + ATA_CODIGO.Trim() + "  OR " + ATA_CODIGO.Trim() + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_DESCRICAO                   LIKE " + ATA_DESCRICAO.Trim() + "  OR " + ATA_DESCRICAO.Trim() + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_CODIGO_ANTECESSOR           LIKE " + ATA_CODIGO_ANTECESSOR.Trim() + "  OR " + ATA_CODIGO_ANTECESSOR.Trim() + " = '') AND " +
                            "      (ATA_SISTEMA.ATA_DESCRICAO_LONGA             LIKE " + ATA_DESCRICAO_LONGA.Trim() + "  OR " + ATA_DESCRICAO_LONGA.Trim() + " = '') " +
                            "ORDER BY ATA_SISTEMA.ATA_CODIGO_ANTECESSOR, ATA_SISTEMA.ATA_CODIGO";

            List<ES_Capitulo_ata> lista = new List<ES_Capitulo_ata>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Capitulo_ata item = new ES_Capitulo_ata();
                    item.ATA_CODIGO = dr["ATA_CODIGO"].ToString();
                    item.ATA_DESCRICAO = dr["ATA_DESCRICAO"].ToString();
                    item.ATA_CODIGO_ANTECESSOR = dr["ATA_CODIGO_ANTECESSOR"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.ATA_DESCRICAO_LONGA = dr["ATA_DESCRICAO_LONGA"].ToString();
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public ES_Capitulo_ata _obter_Capitulo_ata_by_id(
                                                string ATA_CODIGO
                                                )
        {

            if (string.IsNullOrEmpty(ATA_CODIGO)) ATA_CODIGO = "'0'"; else ATA_CODIGO = Util.retonarAspas(ATA_CODIGO);

            string sql = "SELECT " +
                                  "ATA_SISTEMA.ATA_CODIGO, " +
                                  "ATA_SISTEMA.ATA_DESCRICAO, " +
                                  "ATA_SISTEMA.ATA_CODIGO_ANTECESSOR, " +
                                  "ATA_SISTEMA.USU_INSERT, " +
                                  "ATA_SISTEMA.DATA_INSERT, " +
                                  "ATA_SISTEMA.USU_UPDATE, " +
                                  "ATA_SISTEMA.DATA_UPDATE, " +
                                  "CAST(ATA_SISTEMA.ATA_DESCRICAO_LONGA AS VARCHAR(2000)) ATA_DESCRICAO_LONGA " +
                            "FROM ATA_SISTEMA " +
                            
                            "WHERE " +
                            "      (ATA_SISTEMA.ATA_CODIGO = " + ATA_CODIGO + "  OR " + ATA_CODIGO + " = '0') ";

            ES_Capitulo_ata item = new ES_Capitulo_ata();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    item.ATA_CODIGO = dr["ATA_CODIGO"].ToString();
                    item.ATA_DESCRICAO = dr["ATA_DESCRICAO"].ToString();
                    item.ATA_CODIGO_ANTECESSOR = dr["ATA_CODIGO_ANTECESSOR"].ToString();
                    item.USU_INSERT = dr["USU_INSERT"].ToString();
                    item.DATA_INSERT = dr["DATA_INSERT"].ToString();
                    item.USU_UPDATE = dr["USU_UPDATE"].ToString();
                    item.DATA_UPDATE = dr["DATA_UPDATE"].ToString();
                    item.ATA_DESCRICAO_LONGA = dr["ATA_DESCRICAO_LONGA"].ToString();

                }
                return item;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public List<ES_Capitulo_ata> _obter_Ata_antecessor(string ATA_CODIGO)
        {

            if (string.IsNullOrEmpty(ATA_CODIGO)) ATA_CODIGO = "''"; else ATA_CODIGO = Util.retonarAspas(ATA_CODIGO + " % ");


            string sql = "SELECT DISTINCT ATA_CODIGO_ANTECESSOR AS ATA_CODIGO, ATA_CODIGO_ANTECESSOR AS ATA_DESCRICAO " +
                         "FROM ATA_SISTEMA WHERE ATA_CODIGO_ANTECESSOR IS NOT NULL " +
                         "ORDER BY ATA_CODIGO_ANTECESSOR"; 

            List<ES_Capitulo_ata> lista = new List<ES_Capitulo_ata>();
            FbConnection fbConexao = new FbConnection(conectionString);
            FbDataReader dr = fireBird.retornaDataReader(sql, conectionString, fbConexao);
            try
            {
                while (dr.Read())
                {
                    ES_Capitulo_ata item = new ES_Capitulo_ata();
                    item.ATA_CODIGO = dr["ATA_CODIGO"].ToString();
                    item.ATA_DESCRICAO = dr["ATA_DESCRICAO"].ToString();
                    
                    lista.Add(item);

                }
                return lista;
            }
            finally
            {
                fireBird.fecharConexao(fbConexao);
            }
        }


        public void _inserir_Capitulo_ata(
                                                string ATA_CODIGO,
                                                string ATA_DESCRICAO,
                                                string ATA_CODIGO_ANTECESSOR,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ATA_DESCRICAO_LONGA
                                                )
        {

            string sql = " INSERT INTO ATA_SISTEMA " +
                         "      ( " +
                         "          ATA_CODIGO                     , " +
                         "          ATA_DESCRICAO                  , " +
                         "          ATA_CODIGO_ANTECESSOR          , " +
                         "          USU_INSERT                     , " +
                         "          DATA_INSERT                    , " +
                         "          USU_UPDATE                     , " +
                         "          DATA_UPDATE                    , " +
                         "          ATA_DESCRICAO_LONGA              " +
                 "      )" +
                 "  VALUES " +
                 "      ( " +
                              Util.retonarAspas(ATA_CODIGO, true) + ", " +
                              Util.retonarAspas(ATA_DESCRICAO, true) + ", " +
                              Util.retonarAspas(ATA_CODIGO_ANTECESSOR, true) + ", " +
                              Util.retonarAspas(USU_INSERT, true) + ", " +
                              Util.retonarAspas(DATA_INSERT, true) + ", " +
                              Util.retonarAspas(USU_UPDATE, true) + ", " +
                              Util.retonarAspas(DATA_UPDATE, true) + ", " +
                              Util.retonarAspas(ATA_DESCRICAO_LONGA, true) +
                 "      )";
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _atualizar_Capitulo_ata(
                                                string ATA_CODIGO,
                                                string ATA_DESCRICAO,
                                                string ATA_CODIGO_ANTECESSOR,
                                                string USU_INSERT,
                                                string DATA_INSERT,
                                                string USU_UPDATE,
                                                string DATA_UPDATE,
                                                string ATA_DESCRICAO_LONGA
                                                )
        {

            string sql = " UPDATE ATA_SISTEMA SET " +
                         "      ATA_CODIGO                      = " + Util.retonarAspas(ATA_CODIGO, true) + ", " +
                         "      ATA_DESCRICAO                   = " + Util.retonarAspas(ATA_DESCRICAO, true) + ", " +
                         "      ATA_CODIGO_ANTECESSOR           = " + Util.retonarAspas(ATA_CODIGO_ANTECESSOR, true) + ", " +
                         "      USU_INSERT                      = " + Util.retonarAspas(USU_INSERT, true) + ", " +
                         "      DATA_INSERT                     = " + Util.retonarAspas(DATA_INSERT, true) + ", " +
                         "      USU_UPDATE                      = " + Util.retonarAspas(USU_UPDATE, true) + ", " +
                         "      DATA_UPDATE                     = " + Util.retonarAspas(DATA_UPDATE, true) + ", " +
                         "      ATA_DESCRICAO_LONGA             = " + Util.retonarAspas(ATA_DESCRICAO_LONGA, true) +
                         " WHERE ATA_CODIGO =  " + Util.retonarAspas(ATA_CODIGO);
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        public void _excluir_Capitulo_ata(string ATA_CODIGO)
        {
            string sql = "DELETE FROM ATA_SISTEMA WHERE ATA_CODIGO = " + Util.retonarAspas(ATA_CODIGO);
            try
            {
                fireBird._ExecutarComandoRetornandoID(sql, conectionString, false, usuario);
            }
            catch
            { }
        }



        #endregion
    }
}
